package com.rickpan.config;

import com.rickpan.service.UserOnlineService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

/**
 * 定时任务配置
 * 
 * @author RickPan Team
 * @version 1.0.0
 */
@Configuration
@EnableScheduling
public class ScheduleConfig {

    private static final Logger logger = LoggerFactory.getLogger(ScheduleConfig.class);

    @Autowired
    private UserOnlineService userOnlineService;

    /**
     * 清理超时的在线用户
     * 每5分钟执行一次
     */
    @Scheduled(fixedRate = 300000) // 5分钟 = 300000毫秒
    public void cleanupTimeoutUsers() {
        try {
            // logger.debug("开始清理超时用户..."); // 开发调试用
            userOnlineService.cleanupTimeoutUsers();
            // logger.debug("超时用户清理完成"); // 开发调试用
        } catch (Exception e) {
            logger.error("清理超时用户失败", e);
        }
    }

    /**
     * 统计在线用户数量
     * 每10分钟执行一次，用于监控（减少日志频率）
     */
    @Scheduled(fixedRate = 600000) // 10分钟 = 600000毫秒
    public void logOnlineUserStats() {
        try {
            long onlineCount = userOnlineService.getOnlineUserCount();
            // 只有在用户数量变化较大时才记录日志
            if (onlineCount > 0) {
                logger.info("当前在线用户数: {}", onlineCount);
            }
        } catch (Exception e) {
            logger.error("统计在线用户数量失败", e);
        }
    }
}
